package arithmetic3;

/**
 * 机器人走路问题
 */
public class Robot {
    public static void main(String[] args) {
        int count = f(5, 4, 2, 4);
        System.out.println(count);
    }

    /**
     * @param n:长度
     * @param e:目标位置
     * @param cur:当前的位置
     * @param rest:还有多少步需要走
     * @return
     */
    public static int f(int n, int e, int cur, int rest) {
        if (rest == 0) {
            return cur == e ? 1 : 0;
        }
        if (cur == 1) {
            return f(n, e, cur + 1, rest - 1);
        }
        if (cur == n) {
            return f(n, e, cur - 1, rest - 1);
        }
        //机器人处在某个中间位置的时候可以往两边走
        return f(n, e, cur + 1, rest - 1) + f(n, e, cur - 1, rest - 1);
    }
}
